# -*- coding: utf-8 -*-
"""
Created on Wed Aug 16 14:18:58 2023

@author: skunk69
"""

import json

chinese_name = u'中国人婚姻质量问卷'
english_name = 'Chinese Marital Quality Inventory'
abbreviation = 'CMQI'
category = u'生活质量与满意度量表'

outline = u"""婚姻是两个不同的个体组成的受法律保护的同盟，每个人都有各自的动机，每对婚姻的维系也有各自的理由，其复杂性是那些婚姻幸福者难以想象的，这种同盟的性质和关系的密切程度取决于多种因素的综合。婚姻不等于爱情，不是所有婚姻都是感情的结合，不是所有的婚姻关系都是人际关系中最亲密的，但婚姻关系是人类生活中最基本、最长久和最特殊的人际关系。婚姻质量的好坏直接影响到婚姻双方的心身健康甚至子女的健康成长，这一点也一直受公众和心理卫生工作者的重视。
婚姻质量可以从不同的角度来定义，如二人关系的密切程度、家庭功能的有效性和家庭地位的平等性(社会学)；交流的有效性、心理的愉快程度、个性相容和适应的程度(心理学)；性生活的协调性、生活习惯的一致程度(生理学)等。在婚姻质量方面有自评和他评两种方法。在他评方面，中国传统上比较重视门当户对、男才女貌、夫唱妇随，这种方法有较大缺陷，完全没有考虑到个人的心理感受，有些在外人看来很美满的夫妻他们生活得并不幸福，有些在外人看来很不般配的夫妻，他们却生活得非常幸福。所以对于婚姻质量的测量，还是以自评量表作为标准。
《中国人婚姻质量问卷》针对国内外差异而编制的一份适合实际国情的婚姻质量量表，按照简洁、可读、符合中国习俗、没有明显的年龄和文化偏差、符合待测维度的定义等原则编制而成。"""

instruction = u"""这是一份了解你目前婚姻和满意程度的问卷，虽然它不能完全预测你的婚姻是否成功，但可以发现婚姻中可能存在的，需要解决的问题，有助于得到专家的指导。请你仔细阅读每一条，判断每条所描述的情况与你实际情况的符合程度。你一定要仔细看，认真填写，以便反映你的真实情况。
请你在”确实如此”、”可能是这样”、”不同意见也不反对”、”基本上不是”和”绝对不是”之中选择最符合的一项。希望你如实填写，不要征求他人的意见，独立完成。请注意！条目中“我”指你自己，“我们”指你们夫妻，“他”指你的配偶。"""

with open('CMQI.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines[::2]:
    key,value = line.strip().split('.',maxsplit=1)
    items[key] = value.strip()

scales = [u'性格相容',u'夫妻交流',u'化解冲突',u'经济安排',u'业余活动',
          u'情感与性',u'子女与婚姻',u'亲友关系',u'家庭角色',u'生活观念']
L1 = [-4,7,21,-26,32,48,59,72,88]
L2 = [-2,22,29,-42,50,55,-69,75,-82]
L3 = [-6,25,28,-46,56,60,-63,73,85]
L4 = [9,-13,-27,-33,-39,40,58,64,83]
L5 = [-1,10,11,19,-23,-41,54,-87,-90]
L6 = [-5,-8,17,-30,35,53,-62,84,-89]
L7 = [3,-14,-24,37,-38,-51,66,67,71]
L8 = [-18,36,45,-52,65,70,76,-78,-81]
L9 = [-12,-16,20,-31,43,47,-61,-74,-80]
L10 = [-15,-34,44,-49,57,-68,77,-79,-86]

LL = [L1,L2,L3,L4,L5,L6,L7,L8,L9,L10]
scales_items = []
reverse_items = []
for L in LL:
    scales_items.append([abs(l) for l in L])
    reverse_items = reverse_items+[abs(l) for l in L if l < 0]
reverse_items.sort()
print(f'reverse_items={len(reverse_items)} in {len(items)} items')

# check scales_items
print(f'scale length={[len(l) for l in scales_items]}')

check = []
for l in scales_items:
    check = check+l
print(f'len(check)={len(check)}')

# complementary set
check_set = {i for i in sorted(check)}^{i for i in range(1,91)}
print(f'complementary set= {check_set}')

factors = []
factors_scales = []
rating = [u'确实如此',u'可能是这样',u'不同意也不反对',u'基本上不是',u'绝对不是']
score_rules = list(range(1,6))

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""《中国人婚姻质量问卷》属于自评量表。"""

reliability = u"""问卷总分的重测相关为0.852，各维度的重测相关系数在0.672~0.856，两次测试的总分差异无显著性。问卷的内部一致性方面，总分的分半相关和α系数分别为0.899和0.925，各维度的分半相关和α系数的范围分别为0.477~0.698和0.462~0.645。"""
validity = u"""结构效度方面，各维度有中等程度相关，相关值在0.502~0.745，维度与总分有较高的相关，相关值在0.772~0.893。用主成分分析，各维度的因子负荷在0.770~0.895。
效标效度方面，CMQI总分与Olson婚姻质量问卷多数维度有显著相关性（0.448~0.835），与Olson婚姻质量问卷的过分理想显著性相关，与角色平等和信仰一致性的相关无显著性，其他维度两问卷间有不同程度的相关，相应维度之间的相关多数较高（0.317~0.799）。
在实证效度方面，婚姻质量各维度分和总分与SCL-90的人际敏感、抑郁和焦虑有显著性负相关，性格相容维度与SCL-90所有因子的相关达到显著性水平。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""常模样本由全国10家单位协作完成，样本被试涵盖各种职业。不同性别和不同年龄段团体的粗分有一定的差异，所以分别建立了男女不同年龄段的婚姻质量粗分常模。
首先将反向题目反向计分，然后将各维度题目相加得到各维度分，由维度分之和得到总分，总分反映了总体的婚姻质量水平。
一般人们对生活质量表述的习惯为“十分满意”或者“百分百满意”，因此规定维度满意程度的取值范围为0~10分，总体满意度的取值范围为0~100分。
（1）各维度满意水平的计算
将各维度的粗分转换成0~10分，称为满意度，因为一般人群的生活满意度呈偏态分布，总体上偏满意人多，故在转换时将各维度的均数定为6，标准差定为1.5，计算公式如下：
维度满意度=6+1.5*(X-M)/SD，其中，M代表样本粗分均数，SD代表样本的标准差，X代表某个体实际所得的各维度的粗分。
（2）总体满意度的计算
基于同样的原则，将总体满意度均数定为60分，标准差为15，计算公式如下：
总体满意度=60+15*(X-M)/SD，其中，M为样本均数，SD为样本标准差，X是个体所得的总体粗分。
各维度的释义如下：
（1）性格相容：测量受试对配偶行为方式的满意程度。
（2）夫妻交流：测量受试对夫妻间角色交流的感受、信念与态度。
（3）化解冲突：测量受试对夫妻中存在的冲突与解决方式的感受、信念及态度。
（4）经济安排：测量受试对夫妻管理经济方法的态度。
（5）业余活动：测量受试对业余活动的安排与满意度。
（6）情感与性：测量受试对夫妻感情与性关系的关注度与感受。
（7）子女与婚姻：测量受试对是否生育以及子女教育的态度。
（8）亲友关系：测量受试对夫妻双方与亲友关系的感受。
（9）家庭角色：测量受试对婚姻关系承担的各种角色的评价。
（10）生活观念：测量受试对有关的婚姻信念及对夫妻双方信念的评价。
婚姻质量包括10个维度，所得的标准分越高，满意水平越高，标准分得分在3分以上者占人群的95%，几乎没有人能达到十分满意的水平。得分在5~7分，可以认为婚姻质量在一般水平，得分在3~4分提示不太满意，得分在3分以下为极不满意，得分在7分以上则提示婚姻比较满意。
总体满意水平采用百分制，得分越高，满意水平越高，0~29分为极不满意，30~49分为不太满意，50~70分为一般水平，71~90分为比较满意，90分以上为极满意。"""

applications = u"""制定了全国不同性别和年龄段的粗分常模。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)